@@ -3,24 +3,15 @@ require 'ostruct' |
||
3 | 3 |
|
4 | 4 |
class WhoisParser |
5 | 5 |
|
6 |
- def parse(data, whois_lookup, url) |
|
6 |
+ def parse(data, whois_lookup, url, raw, dev) |
|
7 | 7 |
|
8 | 8 |
@parsed_data = Hash.new |
9 | 9 |
|
10 |
- domain_type = url.split(".").last |
|
11 |
- |
|
12 | 10 |
# check if the domain is registered |
13 |
- if data["registered?"] == nil |
|
14 |
- if check_domain_availability(data, whois_lookup) |
|
15 |
- data["registered?"] = true |
|
16 |
- data["available?"] = false |
|
17 |
- else |
|
18 |
- data["registered?"] = false |
|
19 |
- data["available?"] = true |
|
20 |
- end |
|
21 |
- end |
|
11 |
+ data = check_domain_availability(data, whois_lookup) |
|
22 | 12 |
|
23 |
- if data["registered?"] |
|
13 |
+ if data["registered?"] && !dev |
|
14 |
+ domain_type = url.split(".").last |
|
24 | 15 |
case domain_type |
25 | 16 |
when "br" |
26 | 17 |
parserBr(data, whois_lookup, url) |
@@ -39,10 +30,13 @@ class WhoisParser |
||
39 | 30 |
@parsed_data["registered?"] = data["registered?"] |
40 | 31 |
# Available? |
41 | 32 |
@parsed_data["available?"] = data["available?"] |
42 |
- # Parsed whois lookup data |
|
43 |
- #@parsed_data["whois_lookup"] = data |
|
44 |
- # Raw whois lookup data |
|
45 |
- #@parsed_data["raw"] = whois_lookup.to_s |
|
33 |
+ |
|
34 |
+ if raw |
|
35 |
+ # Parsed whois lookup data |
|
36 |
+ @parsed_data["whois_lookup"] = data |
|
37 |
+ # Raw whois lookup data |
|
38 |
+ @parsed_data["raw"] = whois_lookup.to_s |
|
39 |
+ end |
|
46 | 40 |
|
47 | 41 |
return JSON.pretty_generate(@parsed_data) |
48 | 42 |
end |
@@ -136,26 +130,40 @@ class WhoisParser |
||
136 | 130 |
end |
137 | 131 |
|
138 | 132 |
def spliter(data, split_char = "\r") |
139 |
- if data.class == Array |
|
140 |
- if data.first.class == Array |
|
141 |
- clean_data = data.first.first.split(split_char).first.strip |
|
133 |
+ clean_data = "" |
|
134 |
+ if data != nil |
|
135 |
+ if data.class == Array |
|
136 |
+ if data.first.class == Array |
|
137 |
+ if data.first.first != nil |
|
138 |
+ clean_data = data.first.first.split(split_char).first.strip |
|
139 |
+ end |
|
140 |
+ else |
|
141 |
+ if data.first != nil |
|
142 |
+ clean_data = data.first.split(split_char).first.strip |
|
143 |
+ end |
|
144 |
+ end |
|
142 | 145 |
else |
143 |
- clean_data = data.first.split(split_char).first.strip |
|
146 |
+ clean_data = data.split(split_char).first.strip |
|
144 | 147 |
end |
145 |
- else |
|
146 |
- clean_data = data.split(split_char).first.strip |
|
147 | 148 |
end |
148 | 149 |
return clean_data |
149 | 150 |
end |
150 | 151 |
|
151 | 152 |
def check_domain_availability(data, whois_lookup) |
152 |
- data1 = whois_lookup.to_s.scan(/No\smatch\sfor/).first |
|
153 |
- data2 = whois_lookup.to_s.scan(/domain\snot\sfound/).first |
|
154 |
- if data1 == nil || data2 == nil |
|
155 |
- return true |
|
153 |
+ data1 = whois_lookup.to_s.scan(/(No\smatch\sfor\s)/i).first |
|
154 |
+ data2 = whois_lookup.to_s.scan(/(domain\snot\sfound)/i).first |
|
155 |
+ data3 = whois_lookup.to_s.scan(/(release\sprocess:\swaiting)/i).first |
|
156 |
+ if data3 != nil |
|
157 |
+ data["registered?"] = false |
|
158 |
+ data["available?"] = false |
|
159 |
+ elsif data1 == nil && data2 == nil |
|
160 |
+ data["registered?"] = true |
|
161 |
+ data["available?"] = false |
|
156 | 162 |
else |
157 |
- return false |
|
163 |
+ data["registered?"] = false |
|
164 |
+ data["available?"] = true |
|
158 | 165 |
end |
166 |
+ return data |
|
159 | 167 |
end |
160 | 168 |
|
161 | 169 |
end |
@@ -87,7 +87,7 @@ get '/lookup.json' do |
||
87 | 87 |
#cache_for_day |
88 | 88 |
parser = WhoisParser.new |
89 | 89 |
data = whois_lookup.to_h |
90 |
- parser.parse(data, whois_lookup, params[:url]) |
|
90 |
+ parser.parse(data, whois_lookup, params[:url], params[:raw], params[:dev]) |
|
91 | 91 |
rescue Exception => e |
92 | 92 |
@error = e |
93 | 93 |
{ :error => @error }.to_json |